package jp.co.neosystem.adwg.neodiary.db.dao;

import java.util.List;

import jp.co.neosystem.adwg.neodiary.db.entity.IFEntity;
import jp.co.neosystem.adwg.neodiary.db.util.OrderByMap;
import jp.co.neosystem.adwg.neodiary.db.util.WhereMap;

/**
 * テーブルDao基底インターフェース
 * 
 * @author NEOSystem
 */
public interface IFDao<T extends IFEntity>
{
	/**
	 * レコード取得 (全件取得)
	 * 
	 * @return 取得結果
	 */
	List<T> select();

	/**
	 * レコード取得 (条件取得)
	 * 
	 * @param whereMap Whereマップ
	 * @param orderByMap OrderByマップ
	 * @return 取得結果
	 */
	List<T> select(WhereMap whereMap, OrderByMap orderByMap);

	/**
	 * レコード投入
	 * 
	 * @param entity 投入データが格納されたエンティティ
	 */
	void insert(T entity);

	/**
	 * レコード更新
	 * 
	 * @param entity 更新データが格納されたエンティティ
	 * @param where Whereマップ
	 */
	void update(T entity, WhereMap where);

	/**
	 * データ削除
	 * 
	 * @param where Whereマップ
	 */
	void delete(WhereMap where);
}
